//var dom = {};
//dom.debug = false;//添加debug开关可控制开启调试模式，会alert打印运行参数，调试结束去除；


//if( dom.debug ){
//	alert('form.js已加载...................');	
//}

/**
 * 函数功能简述
 * 此插件直接绑定与jQuery类型的对象上，无需入参，
 * 普通DOM对象即是我们用传统的方法(javascript)获得的对象
 * jQuery对象即是用jQuery类库的选择器获得的对象
 * jQuery对象就是通过jQuery包装DOM对象后产生的对象，它是jQuery独有的。如果一个对象是jQuery对象，那么就可以使用jQuery里的方法
 * 在jQuery对象中无法使用DOM对象的任何方法
 * jquery对象转换成dom对象
 * var $cr=$("#cr"); //jquery对象 
 * var cr = $cr[0]; //dom对象 也可写成 var cr=$cr.get(0); 
 * alert(cr.checked); //检测这个checkbox是否给选中
 * dom对象转换成jquery对象 
 * var cr=document.getElementById("cr"); //dom对象 
 * var $cr = $(cr); //转换成jquery对象 
 * --------------------------------------------------------------------------------------------------------------
 * 具体描述一些细节
 * jQuery对象序列化为json对象的插件，直接绑定在对象上如 var jsonObj = $('#f').serializeJson()
 * JSON.stringify可以将json对象转化为json字符串 var jsonString = JSON.stringify(jsonObj)
 * JSON.parse(str)可以将json字符串转化为json对象 var jsonObj = JSON.parse(jsonString)，相当于 var obj = eval(jsonString);
 * --------------------------------------------------------------------------------------------------------------
 * 参数 返回值
 * @param {string} 	param1 参数名1
 * @param {array} 	param2 参数名2
 * @param {string} 	param3 参数名3
 * @returns void	return 返回值
 * --------------------------------------------------------------------------------------------------------------
 * 作者 版本
 * @version	v1.0
 * @date 	2015-08-22 08:50
 * @author 	ZXS<601495817@qq.com>
 */
(function($){  
            $.fn.serializeJson=function(){  
                var serializeObj={};  
                var array=this.serializeArray();  
                var str=this.serialize();  
                $(array).each(function(){  
                    if(serializeObj[this.name]){  
                        if($.isArray(serializeObj[this.name])){  
                            serializeObj[this.name].push(this.value);  
                        }else{  
                            serializeObj[this.name]=[serializeObj[this.name],this.value];  
                        }  
                    }else{  
                        serializeObj[this.name]=this.value;   
                    }  
                });  
                return serializeObj;  
            };  
        })(jQuery);  

/**
 *  
 */
var ajaxResponse;//保存异步请求返回的json格式结果数据 {status：“状态码”，desc：“描述”，data：“业务数据”}，在页面回调函数可直接访问。
function submitByAjax(form,action,callback){
	//alert( 'submitByAjax............' );
	var url = form.attr("action");
	if( action !=null && action !='' ){
		url = action;
	}
	var param = "param="+JSON.stringify( form.serializeJson() );
	$.ajax({    
    		url:		url,
			data: 		param,
		    type:		'POST',    
		    cache:		false, 
		    dataType:	'json',
		    beforeSend:	function(){if(dom.debug)alert(url+'?'+param)},
		    //error:		null,
		    complete:	function(result){ajaxResponse=JSON.parse(result.responseText);callback()},
		    //success: 	null
	});
}
/**

 */
function ajaxFileUpload(fileElementId,param,url,callback) {
    $.ajaxFileUpload({
            url: url, //用于文件上传的服务器端请求地址
            data:{enctype:'multipart/form-data',type:param},//一同上传的数据  
            secureuri: false, //是否需要安全协议，一般设置为false
            fileElementId: fileElementId, //文件上传域的ID
            dataType: 'json', //返回值类型 一般设置为json
            error:function(data,status,e){
            	alert('ss');
            },
            success: function(result,status,e){
            	ajaxResponse=result;
            	callback();
            }  //服务器成功响应处理函数
    });
    return false;
}
//
var getFnName = function(callee){
    var _callee = callee.toString().replace(/[\s\?]*/g,""),
    comb = _callee.length >= 50 ? 50 :_callee.length;
    _callee = _callee.substring(0,comb);
    var name = _callee.match(/^function([^\(]+?)\(/);
    if(name && name[1]){
      return name[1];
    }
    var caller = callee.caller,
    _caller = caller.toString().replace(/[\s\?]*/g,"");
    var last = _caller.indexOf(_callee),
    str = _caller.substring(last-30,last);
    name = str.match(/var([^\=]+?)\=/);
    if(name && name[1]){
      return name[1];
    }
    return "anonymous";
  };